<?php

namespace App\Imports;

use App\Events\ImportPersonEvent;
use App\Helpers\ResponseData;
use App\Models\CustomerManager;
use App\Models\Employee;
use App\Models\Important\ImportantTag;
use App\Models\SystemUser;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithValidation;
use App\Models\Important\ImportantPerson;
use Maatwebsite\Excel\Concerns\WithStartRow;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
class CustomerImport implements ToCollection,WithChunkReading,WithBatchInserts,WithValidation,WithStartRow
{
    protected $start = 4;//第几行开始导入
    protected $size = 100;//分块大小
    protected $chunk = 0;//第几块
    protected $shop_id = 0;
    public function __construct($id=null){
        $this->shop_id = $id;
    }
    public function startRow(): int
    {
        return 2;
    }

    /**
     * @return int
     */
    public function chunkSize(): int
    {
        return $this->size;
    }
    /**
    * @param array $row
    *
    * @return \Illuminate\Database\Eloquent\Model|null
    */
    public function collection(Collection $rows)
    {
        DB::transaction(function () use($rows){
            foreach ($rows as $key => $row) {
                $data = [
//                    'customer_no' => $row[0]??'', // 客户编号
                    'type' => $row[0]??1, // 公司类型
                    'company_name' => $row[1]??'', //公司名称
                    'contact_title'=> $row[2]??1, // 联系人职务
                    'contact_name'=> $row[3]??'', // 联系人姓名
                    'contact_phone'=> $row[4]??'', // 联系人号码
                    'company_address'=> $row[5]??'', // 公司地址
                    'on_line_time'=> $row[6]??'', // 在线时间段
                    'total_num'=> $row[7]??0, // 店铺数量
                    'estimated_consultation_num'=> $row[8]??0, // 预估咨询量
                    'advance_order'=> $row[9]??1, // 账单生成方式
                    'settle_date'=> $row[10]??'', // 每月账单结算日期
                    'contract_source'=> $row[11]??'', // 合同来源
                    'contract_status'=> $row[12]??'', // 每月账单结算日期
                    'mark'=> $row[13]??0, // 备注
                    'cooperation_status'=> $row[14]??1, // 是否停用
                    'department_one_id'=> $row[15]??0, // 一级部门id
                    'department_two_id'=> $row[16]??0, // 二级部门id
                    'department_three_id'=> $row[17]??0, // 三级部门id
                    'system_user_id'=>$row[18]??0, // 负责人id
                    'department_id'=>$row[19]??0, // 归属部门
                    'system_user_name'=>$this->getUser($row[18]), // 负责人姓名
                ];
                \App\Models\CustomerManager::query()->create($data);
            }
        });

    }
    // 获取用户数据
    public function getUser($id){
        $data = SystemUser::query()->where('id',$id)->value('name');
        if($data){
            return $data;
        }else{
            return '';
        }
    }
    public function batchSize(): int
    {
        return 1000;
    }

    public function rules(): array
    {
        return [
//            '4'=>function($attribute, $value, $onFailure) {
//               if(!preg_match("/^1[34578]\d{9}$/", $value)){
//                   return response()->json('手机号不匹配');
//               }
////                if ($value !== 'Patrick Brouwers') {
////                    $onFailure('Name is not Patrick Brouwers');
////                }
//            }

        ];
    }
}
